/**
 * $Revision: 1.0 $
 * $Author: Eric Yang $
 * $Date: Aug 24, 2009 11:25:49 PM $
 *
 * Author: Eric Yang
 * Date  : Aug 24, 2009 11:25:49 PM
 *
 */
package com.gooex.service.base;

import java.util.List;

import com.gooex.domain.base.Property;
import com.gooex.domain.base.PropertyValue;
import com.gooex.service.base.exception.PropertyException;


/**
 * @author Eric Yang
 * @version 1.0
 */
public interface IPropertyManager {
	/** TODO comment */
	public Property getProperty(String id);

	/** TODO comment */
	public PropertyValue getPropertyValue(String id);

	/** TODO comment */
	public Property getPropertyByName(String name);

	/** TODO comment */
	public void saveProperty(Property property);

	/** TODO comment */
	public void savePropertyValue(PropertyValue propertyValue);

	/** TODO comment */
	public void removeProperty(Property property) throws PropertyException;

	/** TODO comment */
	public void removePropertyValue(PropertyValue propertyValue) throws PropertyException;

	/** TODO comment */
	public List<Property> getProperties();

	/** TODO comment */
	public List<PropertyValue> getPropertyValues(String propertyID);

	public void assertPropertiesExists(List<PropertyValue> propertyValues);

	public void assertPropertyExists(PropertyValue item);

	public PropertyValue getPropertyValue(String propertyId, String valueId);

	public void removeAllValues(Property property);

	public Property saveOrUpdateProperty(Property property, List<String> values);
}
